﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace 教师管理系统
{
    /// <summary>
    /// 这是个负责处理登陆、注册事务的模型类
    /// </summary>
    class Login_SignUp_Model
    {
        /// <summary>
        /// 检查登陆界面的文本框的输入是否合法
        /// </summary>
        /// <param name="tx">要检查的文本框</param>
        /// <returns>检查结果</returns>
        static public bool CheckLogin(DevExpress.XtraEditors.TextEdit tx)
        {
            if (tx.Text == "" || tx.Text == "在这里输入您的用户名" || tx.Text == "在这里输入您的密码")
                {
                    return false;
                }
                else
                {
                    return true;
                }
        }
        /// <summary>
        /// 登陆（信息核对）
        /// </summary>
        /// <param name="Loginname">用户名</param>
        /// <param name="Password">密码</param>
        /// <returns>是否登录成功</returns>
        static public bool Login(string Loginname, string Password)
        {
            foreach (DataRow row in GlobleVar.UserInfo.Tables[0].Rows)
            {
                if (row["LoginName"].ToString() == Loginname)
                {
                    if (row["Password"].ToString() == MD5de(Password))
                    {
                        //设定当前用户信息
                        GlobleVar.CurrentUser = new User(row["LoginName"].ToString(), row["Password"].ToString(), row["RealName"].ToString(), row["Identy"].ToString(), row["Grade"].ToString(), row["Class"].ToString(), row["ControlClass"].ToString(), row["Lesson"].ToString(), row["ReSetQuestion"].ToString(), row["ReSetAnswer"].ToString());
                        //设定用户路径
                        GlobleVar.Userpath = GlobleVar.Apppath + "\\UserBin\\" + row["LoginName"].ToString();
                        return true;
                    }
                    else
                    {
                        DevExpress.XtraEditors.XtraMessageBox.Show("密码错误！");
                        return false;
                    }
                }
            }
            DevExpress.XtraEditors.XtraMessageBox.Show("用户不存在！");
            return false;
        }
       /*
            GlobleVar.UserInfo.Tables[0].Rows.Add(user.UserName,MD5de(user.Password), user.RealName, user.Identy, user.Grade, user.Class, user.ControlClass, user.Lesson, user.ReSetQuestion, user.ReSetAnswer);
            //把用户写入全局数据集中
            GlobleVar.UserInfo.WriteXml(GlobleVar.Datapath + "\\user.xml", XmlWriteMode.WriteSchema);
            //创建用户路径
            System.IO.Directory.CreateDirectory(GlobleVar.Apppath + "\\UserBin\\" + user.UserName);
            //把用户数据集写入XML中
            GlobleVar.UserSet.Tables["LessonTime"].WriteXml(GlobleVar.Apppath + "\\UserBin\\" + user.UserName + "\\LessonTime.xml", XmlWriteMode.WriteSchema);
        * */
       
        /// <summary>
        /// MD5加密函数
        /// </summary>
        /// <param name="content">要加密的内容</param>
        /// <returns>加密结果</returns>
        static public string MD5de(string content)
        {
            string pwd = "";
            System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();//实例化一个md5对像
            // 加密后是一个字节类型的数组，这里要注意编码UTF8/Unicode等的选择　
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(content));
            // 通过使用循环，将字节类型的数组转换为字符串，此字符串是常规字符格式化所得
            for (int i = 0; i < s.Length; i++)
            {
                // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母，如果使用大写（X）则格式后的字符是大写字符

                pwd = pwd + s[i].ToString("X");

            }
            return pwd;
        }
    }
}
